#include<bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);++i)#define per(i,a,b) for(int i=(a);i>=(b);--i)#define pii pair<int,int>#define fi first#define se second#define ll long longusingnamespacestd;inlinellread(){llx=0,f=1;charch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(isdigit(ch)){x=x*10+ch-48;ch=getchar();}returnx*f;}constintN=2e3+5,d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};intn,m,q;charcol[N][N];piispe[N][N];ints[N][N],v[N][N],h[N][N];boolin(intx,inty,intnx,intny){if(nx<0||ny<0||nx>n+1||ny>m+1)return0;if(nx==x+1)returncol[x][y]!=col[x][y-1];if(nx==x-1)returncol[nx][y]!=col[nx][y-1];if(ny==y+1)returncol[x][y]!=col[x-1][y];returncol[x][ny]!=col[x-1][ny];}voiddfs(intx,inty){//建图rep(i,0,3){intnx=x+d[i][0],ny=y+d[i][1];if(in(x,y,nx,ny)){//如果两点间有边if(nx==x+1)v[x][y]=1;elseif(nx==x-1)v[nx][y]=1;elseif(ny==y+1)h[x][y]=1;elseh[x][ny]=1;if(!spe[nx][ny].fi){spe[nx][ny]=spe[x][y];dfs(nx,ny);}}}}intsum(intf[N][N],intx,inty,inta,intb){returnf[a][b]+f[x][y]-f[x][b]-f[a][y];}boolflg[N][N];boolout(inti,intj,intx,inty,inta,intb){intnx=spe[i][j].fi,ny=spe[i][j].se;if(nx>x&&nx<=a&&ny>y&&ny<=b&&!flg[nx][ny]){flg[nx][ny]=1;return1;}return0;}voidrem(intx,inty){intnx=spe[x][y].fi,ny=spe[x][y].se;flg[nx][ny]=0;}intmain(){n=read(),m=read(),q=read();rep(i,1,n){scanf("%s",col[i]+1);}rep(i,1,n+1)rep(j,1,m+1){if(!spe[i][j].fi){s[i][j]=1;spe[i][j]={i,j};dfs(i,j);}}rep(i,1,n+1)rep(j,1,m+1){s[i][j]+=s[i][j-1];h[i][j]+=h[i][j-1];v[i][j]+=v[i][j-1];}rep(i,1,n+1)rep(j,1,m+1){s[i][j]+=s[i-1][j];h[i][j]+=h[i-1][j];v[i][j]+=v[i-1][j];}while(q--){intx=read(),y=read(),a=read(),b=read();//这里 E 和 V 均去掉了外面一圈,答案不变intE=sum(v,x-1,y,a,b)+sum(h,x,y-1,a,b);intV=(a-x)*(b-y),C=sum(s,x,y,a,b);rep(i,x,a+1){if(out(i,b+1,x,y,a,b))C--;if(out(i,y,x,y,a,b))C--;}rep(i,y,b+1){if(out(a+1,i,x,y,a,b))C--;if(out(x,i,x,y,a,b))C--;}rep(i,x,a+1){rem(i,b+1);rem(i,y);}rep(i,y,b+1){rem(x,i);rem(a+1,i);}//printf("%d %d %d\n",E,V,C);printf("%d\n",E-V+C+1);}return0;}